#include <iostream>
using namespace std;

class Time
{
public:
    Time()
    {
        cout << "Time()" << endl;
    }
    void Print()
    {
        cout << _hour << "-" << _minute << "-" << _second << endl;
    }

private:
    int _hour;
    int _minute;
    int _second;
};
class Date
{
public:
    // 构造函数：默认成员函数，我们不写编译器会生成一个
    // 无参的构造函数和全缺省的构造函一般只有一个，否则调用会有歧义
    // 默认构造函数：不需要传参就可以调用构造函数就是默认构造函数
    Date()
    {
        _year = 1;
        _month = 1;
        _day = 1;
    }
    Date(int year, int month, int day)
    {
        _year = year;
        _month = month;
        _day = day;
    }
    ~Date()
    {
        cout << "~Data" << endl;
    }
    void Print()
    {
        cout << _year << "-" << _month << "-" << _day << endl;
        _t.Print();
    }

private:
    int _year;
    int _month;
    int _day;
    Time _t;
};

// 内置类型/基本类型 int/char/double/指针 语言自己自身定义的类型
// 自定义类型 struct/class
// 默认生成的构造函数 对于内置类型不做处理，自定义类型回去调用它的默认构造

int main()
{
    // cpp规定无参不能带括号，与函数声明不能区分
    Date d1;
    d1.Print();
    // Date d2(2024, 12, 5);
    // d2.Print();
}
